home *** CD-ROM | disk | FTP | other *** search
/ SPACE 2 / SPACE - Library 2 - Volume 1.iso / program / 317 / asmsrc / pmmu.h < prev    next >
Encoding:
C/C++ Source or Header  |  1988-10-20  |  11.8 KB  |  285 lines

  1.  
  2. /*
  3.  * pmmu.h
  4.  */
  5.  
  6. /* I suppose we have to copyright this file.  Someone on the net sent it
  7.    to us as part of the changes for the m68851 Memory Management Unit */
  8.  
  9. /* Copyright (C) 1987 Free Software Foundation, Inc.
  10.  
  11. This file is part of Gas, the GNU Assembler.
  12.  
  13. The GNU assembler is distributed in the hope that it will be
  14. useful, but WITHOUT ANY WARRANTY.  No author or distributor
  15. accepts responsibility to anyone for the consequences of using it
  16. or for whether it serves any particular purpose or works at all,
  17. unless he says so in writing.  Refer to the GNU Assembler General
  18. Public License for full details.
  19.  
  20. Everyone is granted permission to copy, modify and redistribute
  21. the GNU Assembler, but only under the conditions described in the
  22. GNU Assembler General Public License.  A copy of this license is
  23. supposed to have been given to you along with the GNU Assembler
  24. so you can know your rights and responsibilities.  It should be
  25. in a file named COPYING.  Among other things, the copyright
  26. notice and this notice must be preserved on all copies.  */
  27.  
  28. #ifdef m68851
  29.  
  30. /*
  31.    I didn't use much imagination in choosing the 
  32.    following codes, so many of them aren't very
  33.    mnemonic. -rab
  34.  
  35.    P  pmmu register
  36.     Possible values:
  37.     000    TC    Translation Control reg
  38.     100    CAL    Current Access Level
  39.     101    VAL    Validate Access Level
  40.     110    SCC    Stack Change Control
  41.     111    AC    Access Control
  42.  
  43.    W  wide pmmu registers
  44.     Possible values:
  45.     001    DRP    Dma Root Pointer
  46.     010    SRP    Supervisor Root Pointer
  47.     011    CRP    Cpu Root Pointer
  48.  
  49.    f    function code register
  50.     0    SFC
  51.     1    DFC
  52.  
  53.    V    VAL register only
  54.  
  55.    X    BADx, BACx
  56.     100    BAD    Breakpoint Acknowledge Data
  57.     101    BAC    Breakpoint Acknowledge Control
  58.  
  59.    Y    PSR
  60.    Z    PCSR
  61.  
  62.    |    memory         (modes 2-6, 7.*)
  63.  
  64. */
  65.  
  66. /*
  67.  * these defines should be in m68k.c but
  68.  * i put them here to keep all the m68851 stuff
  69.  * together -rab
  70.  * JF--Make sure these #s don't clash with the ones in m68k.c
  71.  * That would be BAD.
  72.  */
  73. #define TC    (FPS+1)        /* 48 */
  74. #define DRP    (TC+1)        /* 49 */
  75. #define SRP    (DRP+1)        /* 50 */
  76. #define CRP    (SRP+1)        /* 51 */
  77. #define CAL    (CRP+1)        /* 52 */
  78. #define VAL    (CAL+1)        /* 53 */
  79. #define SCC    (VAL+1)        /* 54 */
  80. #define AC    (SCC+1)        /* 55 */
  81. #define BAD    (AC+1)        /* 56,57,58,59, 60,61,62,63 */
  82. #define BAC    (BAD+8)        /* 64,65,66,67, 68,69,70,71 */
  83. #define PSR    (BAC+8)        /* 72 */
  84. #define PCSR    (PSR+1)        /* 73 */
  85.  
  86.  /* name */    /* opcode */        /* match */        /* args */
  87.  
  88. {"pbac",    one(0xf0c7),        one(0xffbf),        "Bc"},
  89. {"pbacw",    one(0xf087),        one(0xffbf),        "Bc"},
  90. {"pbas",    one(0xf0c6),        one(0xffbf),        "Bc"},
  91. {"pbasw",    one(0xf086),        one(0xffbf),        "Bc"},
  92. {"pbbc",    one(0xf0c1),        one(0xffbf),        "Bc"},
  93. {"pbbcw",    one(0xf081),        one(0xffbf),        "Bc"},
  94. {"pbbs",    one(0xf0c0),        one(0xffbf),        "Bc"},
  95. {"pbbsw",    one(0xf080),        one(0xffbf),        "Bc"},
  96. {"pbcc",    one(0xf0cf),        one(0xffbf),        "Bc"},
  97. {"pbccw",    one(0xf08f),        one(0xffbf),        "Bc"},
  98. {"pbcs",    one(0xf0ce),        one(0xffbf),        "Bc"},
  99. {"pbcsw",    one(0xf08e),        one(0xffbf),        "Bc"},
  100. {"pbgc",    one(0xf0cd),        one(0xffbf),        "Bc"},
  101. {"pbgcw",    one(0xf08d),        one(0xffbf),        "Bc"},
  102. {"pbgs",    one(0xf0cc),        one(0xffbf),        "Bc"},
  103. {"pbgsw",    one(0xf08c),        one(0xffbf),        "Bc"},
  104. {"pbic",    one(0xf0cb),        one(0xffbf),        "Bc"},
  105. {"pbicw",    one(0xf08b),        one(0xffbf),        "Bc"},
  106. {"pbis",    one(0xf0ca),        one(0xffbf),        "Bc"},
  107. {"pbisw",    one(0xf08a),        one(0xffbf),        "Bc"},
  108. {"pblc",    one(0xf0c3),        one(0xffbf),        "Bc"},
  109. {"pblcw",    one(0xf083),        one(0xffbf),        "Bc"},
  110. {"pbls",    one(0xf0c2),        one(0xffbf),        "Bc"},
  111. {"pblsw",    one(0xf082),        one(0xffbf),        "Bc"},
  112. {"pbsc",    one(0xf0c5),        one(0xffbf),        "Bc"},
  113. {"pbscw",    one(0xf085),        one(0xffbf),        "Bc"},
  114. {"pbss",    one(0xf0c4),        one(0xffbf),        "Bc"},
  115. {"pbssw",    one(0xf084),        one(0xffbf),        "Bc"},
  116. {"pbwc",    one(0xf0c9),        one(0xffbf),        "Bc"},
  117. {"pbwcw",    one(0xf089),        one(0xffbf),        "Bc"},
  118. {"pbws",    one(0xf0c8),        one(0xffbf),        "Bc"},
  119. {"pbwsw",    one(0xf088),        one(0xffbf),        "Bc"},
  120.  
  121.  
  122. {"pdbac",    two(0xf048, 0x0007),    two(0xfff8, 0xffff),    "DsBw"},
  123. {"pdbas",    two(0xf048, 0x0006),    two(0xfff8, 0xffff),    "DsBw"},
  124. {"pdbbc",    two(0xf048, 0x0001),    two(0xfff8, 0xffff),    "DsBw"},
  125. {"pdbbs",    two(0xf048, 0x0000),    two(0xfff8, 0xffff),    "DsBw"},
  126. {"pdbcc",    two(0xf048, 0x000f),    two(0xfff8, 0xffff),    "DsBw"},
  127. {"pdbcs",    two(0xf048, 0x000e),    two(0xfff8, 0xffff),    "DsBw"},
  128. {"pdbgc",    two(0xf048, 0x000d),    two(0xfff8, 0xffff),    "DsBw"},
  129. {"pdbgs",    two(0xf048, 0x000c),    two(0xfff8, 0xffff),    "DsBw"},
  130. {"pdbic",    two(0xf048, 0x000b),    two(0xfff8, 0xffff),    "DsBw"},
  131. {"pdbis",    two(0xf048, 0x000a),    two(0xfff8, 0xffff),    "DsBw"},
  132. {"pdblc",    two(0xf048, 0x0003),    two(0xfff8, 0xffff),    "DsBw"},
  133. {"pdbls",    two(0xf048, 0x0002),    two(0xfff8, 0xffff),    "DsBw"},
  134. {"pdbsc",    two(0xf048, 0x0005),    two(0xfff8, 0xffff),    "DsBw"},
  135. {"pdbss",    two(0xf048, 0x0004),    two(0xfff8, 0xffff),    "DsBw"},
  136. {"pdbwc",    two(0xf048, 0x0009),    two(0xfff8, 0xffff),    "DsBw"},
  137. {"pdbws",    two(0xf048, 0x0008),    two(0xfff8, 0xffff),    "DsBw"},
  138.  
  139. {"pflusha",    two(0xf000, 0x2400),    two(0xffff, 0xffff),    "" },
  140.  
  141. {"pflush",    two(0xf000, 0x3010),    two(0xffc0, 0xfe10),    "T3T9" },
  142. {"pflush",    two(0xf000, 0x3810),    two(0xffc0, 0xfe10),    "T3T9&s" },
  143. {"pflush",    two(0xf000, 0x3008),    two(0xffc0, 0xfe18),    "D3T9" },
  144. {"pflush",    two(0xf000, 0x3808),    two(0xffc0, 0xfe18),    "D3T9&s" },
  145. {"pflush",    two(0xf000, 0x3000),    two(0xffc0, 0xfe1e),    "f3T9" },
  146. {"pflush",    two(0xf000, 0x3800),    two(0xffc0, 0xfe1e),    "f3T9&s" },
  147.  
  148. {"pflushs",    two(0xf000, 0x3410),    two(0xfff8, 0xfe10),    "T3T9" },
  149. {"pflushs",    two(0xf000, 0x3c00),    two(0xfff8, 0xfe00),    "T3T9&s" },
  150. {"pflushs",    two(0xf000, 0x3408),    two(0xfff8, 0xfe18),    "D3T9" },
  151. {"pflushs",    two(0xf000, 0x3c08),    two(0xfff8, 0xfe18),    "D3T9&s" },
  152. {"pflushs",    two(0xf000, 0x3400),    two(0xfff8, 0xfe1e),    "f3T9" },
  153. {"pflushs",    two(0xf000, 0x3c00),    two(0xfff8, 0xfe1e),    "f3T9&s"},
  154.  
  155. {"pflushr",    two(0xf000, 0xa000),    two(0xffc0, 0xffff),    "|s" },
  156.  
  157. {"ploadr",    two(0xf000, 0x2210),    two(0xffc0, 0xfff0),    "T3&s" },
  158. {"ploadr",    two(0xf000, 0x2208),    two(0xffc0, 0xfff8),    "D3&s" },
  159. {"ploadr",    two(0xf000, 0x2200),    two(0xffc0, 0xfffe),    "f3&s" },
  160. {"ploadw",    two(0xf000, 0x2010),    two(0xffc0, 0xfff0),    "T3&s" },
  161. {"ploadw",    two(0xf000, 0x2008),    two(0xffc0, 0xfff8),    "D3&s" },
  162. {"ploadw",    two(0xf000, 0x2000),    two(0xffc0, 0xfffe),    "f3&s" },
  163.  
  164. /* TC, CRP, DRP, SRP, CAL, VAL, SCC, AC */
  165. {"pmove",    two(0xf000, 0x4000),    two(0xffc0, 0xe3ff),    "*sP8" },
  166. {"pmove",    two(0xf000, 0x4200),    two(0xffc0, 0xe3ff),    "P8%s" },
  167. {"pmove",    two(0xf000, 0x4000),    two(0xffc0, 0xe3ff),    "|sW8" },
  168. {"pmove",    two(0xf000, 0x4200),    two(0xffc0, 0xe3ff),    "W8~s" },
  169.  
  170. /* BADx, BACx */
  171. {"pmove",    two(0xf000, 0x6200),    two(0xffc0, 0xe3e3),    "*sX3" },
  172. {"pmove",    two(0xf000, 0x6000),    two(0xffc0, 0xe3e3),    "X3%s" },
  173.  
  174. /* PSR, PCSR */
  175. /* {"pmove",    two(0xf000, 0x6100),    two(oxffc0, oxffff),    "*sZ8" }, */
  176. {"pmove",    two(0xf000, 0x6000),    two(0xffc0, 0xffff),    "*sY8" },
  177. {"pmove",    two(0xf000, 0x6200),    two(0xffc0, 0xffff),    "Y8%s" },
  178. {"pmove",    two(0xf000, 0x6600),    two(0xffc0, 0xffff),    "Z8%s" },
  179.  
  180. {"prestore",    one(0xf140),        one(0xffc0),        "&s"},
  181. {"prestore",    one(0xf158),        one(0xfff8),        "+s"},
  182. {"psave",    one(0xf100),        one(0xffc0),        "&s"},
  183. {"psave",    one(0xf100),        one(0xffc0),        "+s"},
  184.  
  185. {"psac",    two(0xf040, 0x0007),    two(0xffc0, 0xffff),    "@s"},
  186. {"psas",    two(0xf040, 0x0006),    two(0xffc0, 0xffff),    "@s"},
  187. {"psbc",    two(0xf040, 0x0001),    two(0xffc0, 0xffff),    "@s"},
  188. {"psbs",    two(0xf040, 0x0000),    two(0xffc0, 0xffff),    "@s"},
  189. {"pscc",    two(0xf040, 0x000f),    two(0xffc0, 0xffff),    "@s"},
  190. {"pscs",    two(0xf040, 0x000e),    two(0xffc0, 0xffff),    "@s"},
  191. {"psgc",    two(0xf040, 0x000d),    two(0xffc0, 0xffff),    "@s"},
  192. {"psgs",    two(0xf040, 0x000c),    two(0xffc0, 0xffff),    "@s"},
  193. {"psic",    two(0xf040, 0x000b),    two(0xffc0, 0xffff),    "@s"},
  194. {"psis",    two(0xf040, 0x000a),    two(0xffc0, 0xffff),    "@s"},
  195. {"pslc",    two(0xf040, 0x0003),    two(0xffc0, 0xffff),    "@s"},
  196. {"psls",    two(0xf040, 0x0002),    two(0xffc0, 0xffff),    "@s"},
  197. {"pssc",    two(0xf040, 0x0005),    two(0xffc0, 0xffff),    "@s"},
  198. {"psss",    two(0xf040, 0x0004),    two(0xffc0, 0xffff),    "@s"},
  199. {"pswc",    two(0xf040, 0x0009),    two(0xffc0, 0xffff),    "@s"},
  200. {"psws",    two(0xf040, 0x0008),    two(0xffc0, 0xffff),    "@s"},
  201.  
  202. {"ptestr",    two(0xf000, 0x8210),    two(0xffc0, 0xe3f0),    "T3&sQ8" },
  203. {"ptestr",    two(0xf000, 0x8310),    two(0xffc0, 0xe310),    "T3&sQ8A9" },
  204. {"ptestr",    two(0xf000, 0x8208),    two(0xffc0, 0xe3f8),    "D3&sQ8" },
  205. {"ptestr",    two(0xf000, 0x8308),    two(0xffc0, 0xe318),    "D3&sQ8A9" },
  206. {"ptestr",    two(0xf000, 0x8200),    two(0xffc0, 0xe3fe),    "f3&sQ8" },
  207. {"ptestr",    two(0xf000, 0x8300),    two(0xffc0, 0xe31e),    "f3&sQ8A9" },
  208.  
  209. {"ptestw",    two(0xf000, 0x8010),    two(0xffc0, 0xe3f0),    "T3&sQ8" },
  210. {"ptestw",    two(0xf000, 0x8110),    two(0xffc0, 0xe310),    "T3&sQ8A9" },
  211. {"ptestw",    two(0xf000, 0x8008),    two(0xffc0, 0xe3f8),    "D3&sQ8" },
  212. {"ptestw",    two(0xf000, 0x8108),    two(0xffc0, 0xe318),    "D3&sQ8A9" },
  213. {"ptestw",    two(0xf000, 0x8000),    two(0xffc0, 0xe3fe),    "f3&sQ8" },
  214. {"ptestw",    two(0xf000, 0x8100),    two(0xffc0, 0xe31e),    "f3&sQ8A9" },
  215.  
  216. {"ptrapacw",    two(0xf07a, 0x0007),    two(0xffff, 0xffff),    "#w"},
  217. {"ptrapacl",    two(0xf07b, 0x0007),    two(0xffff, 0xffff),    "#l"},
  218. {"ptrapac",    two(0xf07c, 0x0007),    two(0xffff, 0xffff),    ""},
  219.  
  220. {"ptrapasw",    two(0xf07a, 0x0006),    two(0xffff, 0xffff),    "#w"},
  221. {"ptrapasl",    two(0xf07b, 0x0006),    two(0xffff, 0xffff),    "#l"},
  222. {"ptrapas",    two(0xf07c, 0x0006),    two(0xffff, 0xffff),    ""},
  223.  
  224. {"ptrapbcw",    two(0xf07a, 0x0001),    two(0xffff, 0xffff),    "#w"},
  225. {"ptrapbcl",    two(0xf07b, 0x0001),    two(0xffff, 0xffff),    "#l"},
  226. {"ptrapbc",    two(0xf07c, 0x0001),    two(0xffff, 0xffff),    ""},
  227.  
  228. {"ptrapbsw",    two(0xf07a, 0x0000),    two(0xffff, 0xffff),    "#w"},
  229. {"ptrapbsl",    two(0xf07b, 0x0000),    two(0xffff, 0xffff),    "#l"},
  230. {"ptrapbs",    two(0xf07c, 0x0000),    two(0xffff, 0xffff),    ""},
  231.  
  232. {"ptrapccw",    two(0xf07a, 0x000f),    two(0xffff, 0xffff),    "#w"},
  233. {"ptrapccl",    two(0xf07b, 0x000f),    two(0xffff, 0xffff),    "#l"},
  234. {"ptrapcc",    two(0xf07c, 0x000f),    two(0xffff, 0xffff),    ""},
  235.  
  236. {"ptrapcsw",    two(0xf07a, 0x000e),    two(0xffff, 0xffff),    "#w"},
  237. {"ptrapcsl",    two(0xf07b, 0x000e),    two(0xffff, 0xffff),    "#l"},
  238. {"ptrapcs",    two(0xf07c, 0x000e),    two(0xffff, 0xffff),    ""},
  239.  
  240. {"ptrapgcw",    two(0xf07a, 0x000d),    two(0xffff, 0xffff),    "#w"},
  241. {"ptrapgcl",    two(0xf07b, 0x000d),    two(0xffff, 0xffff),    "#l"},
  242. {"ptrapgc",    two(0xf07c, 0x000d),    two(0xffff, 0xffff),    ""},
  243.  
  244. {"ptrapgsw",    two(0xf07a, 0x000c),    two(0xffff, 0xffff),    "#w"},
  245. {"ptrapgsl",    two(0xf07b, 0x000c),    two(0xffff, 0xffff),    "#l"},
  246. {"ptrapgs",    two(0xf07c, 0x000c),    two(0xffff, 0xffff),    ""},
  247.  
  248. {"ptrapicw",    two(0xf07a, 0x000b),    two(0xffff, 0xffff),    "#w"},
  249. {"ptrapicl",    two(0xf07b, 0x000b),    two(0xffff, 0xffff),    "#l"},
  250. {"ptrapic",    two(0xf07c, 0x000b),    two(0xffff, 0xffff),    ""},
  251.  
  252. {"ptrapisw",    two(0xf07a, 0x000a),    two(0xffff, 0xffff),    "#w"},
  253. {"ptrapisl",    two(0xf07b, 0x000a),    two(0xffff, 0xffff),    "#l"},
  254. {"ptrapis",    two(0xf07c, 0x000a),    two(0xffff, 0xffff),    ""},
  255.  
  256. {"ptraplcw",    two(0xf07a, 0x0003),    two(0xffff, 0xffff),    "#w"},
  257. {"ptraplcl",    two(0xf07b, 0x0003),    two(0xffff, 0xffff),    "#l"},
  258. {"ptraplc",    two(0xf07c, 0x0003),    two(0xffff, 0xffff),    ""},
  259.  
  260. {"ptraplsw",    two(0xf07a, 0x0002),    two(0xffff, 0xffff),    "#w"},
  261. {"ptraplsl",    two(0xf07b, 0x0002),    two(0xffff, 0xffff),    "#l"},
  262. {"ptrapls",    two(0xf07c, 0x0002),    two(0xffff, 0xffff),    ""},
  263.  
  264. {"ptrapscw",    two(0xf07a, 0x0005),    two(0xffff, 0xffff),    "#w"},
  265. {"ptrapscl",    two(0xf07b, 0x0005),    two(0xffff, 0xffff),    "#l"},
  266. {"ptrapsc",    two(0xf07c, 0x0005),    two(0xffff, 0xffff),    ""},
  267.  
  268. {"ptrapssw",    two(0xf07a, 0x0004),    two(0xffff, 0xffff),    "#w"},
  269. {"ptrapssl",    two(0xf07b, 0x0004),    two(0xffff, 0xffff),    "#l"},
  270. {"ptrapss",    two(0xf07c, 0x0004),    two(0xffff, 0xffff),    ""},
  271.  
  272. {"ptrapwcw",    two(0xf07a, 0x0009),    two(0xffff, 0xffff),    "#w"},
  273. {"ptrapwcl",    two(0xf07b, 0x0009),    two(0xffff, 0xffff),    "#l"},
  274. {"ptrapwc",    two(0xf07c, 0x0009),    two(0xffff, 0xffff),    ""},
  275.  
  276. {"ptrapwsw",    two(0xf07a, 0x0008),    two(0xffff, 0xffff),    "#w"},
  277. {"ptrapwsl",    two(0xf07b, 0x0008),    two(0xffff, 0xffff),    "#l"},
  278. {"ptrapws",    two(0xf07c, 0x0008),    two(0xffff, 0xffff),    ""},
  279.  
  280. {"pvalid",    two(0xf000, 0x2800),    two(0xffc0, 0xffff),    "Vs&s"},
  281. {"pvalid",    two(0xf000, 0x2c00),    two(0xffc0, 0xfff8),    "A3&s" },
  282.  
  283. #endif /* m68851 */
  284. /* end pmmu.h */
  285.